#include "heartRequest.h"
#include <cjson/cJSON.h>
#include <stdio.h>



size_t heartRespCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    size_t realsize = size * nmemb;
    // 这里可以处理获取到的数据，比如存储到文件或者其他操作
    char * result = (char *)contents;
    //解析为json格式的字符串
    cJSON *root = cJSON_Parse(result);
    //做非空判断
    if(root!=NULL){
        cJSON *successRoot = cJSON_GetObjectItemCaseSensitive(root,"success");
        if (cJSON_IsFalse(successRoot))
        {   
            cJSON *codeRoot = cJSON_GetObjectItemCaseSensitive(root,"code");
            cJSON *messageRoot = cJSON_GetObjectItemCaseSensitive(root,"message");   
            printf("获取列表失败： code=%d ,message=%s \n",codeRoot->valueint,messageRoot->valuestring);
             
        }else{
            //解析服务器返回的内容
            cJSON *data = cJSON_GetObjectItemCaseSensitive(root,"data");
            if (data!=NULL)
            {
                //命令列表的解析
                cJSON *cmd_list = cJSON_GetObjectItemCaseSensitive(data,"cmd_list");
                paresCmdList(cmd_list);
                //广告列表的解析【明天】
                cJSON *ad_list = cJSON_GetObjectItemCaseSensitive(data,"ad_list");

            }
            


        }
    }

    return realsize;
}


void paresCmdList(cJSON *cmd_list){
    //1.判断是一个list
    if (cJSON_IsArray(cmd_list))
    {
        //2.获取cmdlist    长度大小
        int size = cJSON_GetArraySize(cmd_list);
        for (int i = 0; i < size; i++)
        {
            //获取数组每一个元素
            cJSON *item = cJSON_GetArrayItem(cmd_list,i);
            //获取具体的值
            int cmd = item->valueint;
            switch (cmd)
            {
            case 1:
                system("ll");
                break;
            case 2:
                
                break;    
            case 3:
                
                break;

            default:
                break;
            }

        }
    }

}



/*
    ip：是动态的 （通过读取配置文件 能够获取）
    sn: 是动态   ()
    地址：动态    (通过读取配置文件 能够获取)
*/

void sendHeartRequest(gchar *gatewayIp,gchar *sn){

    char * urlFormatStr="http://%s/hearts.json?sn=%s";
    //替换动态参数
    char *url = calloc(1,100);
    //替换动态参数
    sprintf(url,urlFormatStr,gatewayIp,sn);
    printf("%s\n",url);
    //核心调用一个发送请求的函数
    sendGetRequest(url,heartRespCallback);
}
